'''
@Project ：hdcms-scripts
@File    ：dhy_room_grouping.py
@IDE     ：PyCharm
@Author  ：朱广杰
@Date    ：2024/11/12 18:46
'''

from common.FILE_PATH import load_yaml_file, write_yaml
from common.hd_log import mylog
from common.hd_response import CaseResponse
from common.hd_exception import except_script_error
from datetime import datetime
from script.dhy_room_grouping import join_live, check_user_in_live, discuss_open, wish_join_room, \
    check_user_wish_join_room, user_join_discuss_room, discuss_close, check_discuss_status

@except_script_error
def DHYRoomGrouping(course_id: str, chat_room_id: str, zuser_id: str):
    """
        @api {post} /dhy_room_grouping 大会员模式直播间分组
        @apiGroup 课程
        @apiName DHYRoomGrouping
        @apiDescription  大会员模式直播间分组
        @apiPermission zgj

        @apiParam {String='b2dfa8ff218d3e1258395274049e188e'} course_id=b2dfa8ff218d3e1258395274049e188e 课程ID
        @apiParam {String='133437'} chat_room_id=133437 直播间ID
        @apiParam {String='374a2b4762b7938337af9ddec0a3218a'} zuser_id=374a2b4762b7938337af9ddec0a3218a 主持人ID
        @apiParamExample {json} 请求示例:
        {
                "course_id": "b2dfa8ff218d3e1258395274049e188e",
                "chat_room_id": "133437",
                "zuser_id": "374a2b4762b7938337af9ddec0a3218a"
            }
        @apiSuccess (200) {Integer} responseCode 服务器码
        @apiSuccess (200) {String} responseMsg 提示语
        @apiSuccess (200) {Object} responseData 造数成功返回相关的数据
        @apiSuccessExample {json} 返回示例:
        {
            "responseCode": 0,
            "responseMsg": "请求成功",
            "responseData": {
            }
        }
        """

    #  替换参数
    content = load_yaml_file('/config/common.yml')
    params = {'chat_room_id': chat_room_id, 'course_id': course_id,
              'zuser_id': zuser_id}
    content.update(params)
    write_yaml('/config/common.yml', content)
    new_content = load_yaml_file('/config/common.yml')
    mylog.info(f'替换过的参数为{new_content}')
    now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    demo_log = f"""
    [{now_time}]: 脚本开始 -> 进行大会员模式直播间分组
    [{now_time}]: 脚本执行 -> 传入参数为：课程ID为{course_id}，直播间ID为{chat_room_id}，用户ID为{zuser_id}
    [{now_time}]: 脚本执行 -> 替换config下全局变量数据
    [{now_time}]: 脚本执行 -> 执行pytest大会员分组脚本
    [{now_time}]: 脚本执行 -> 执行用户加入主课堂直播间
    [{now_time}]: 脚本执行 -> 校验用户是否进入直播间
    [{now_time}]: 脚本执行 -> 编辑课程，探索流信息后，主持人开启讨论
    [{now_time}]: 脚本执行 -> 用户同意进入预分配房间
    [{now_time}]: 脚本执行 -> 检查用户是否同意开启分房
    [{now_time}]: 脚本执行 -> 用户进入九宫格
    [{now_time}]: 脚本执行 -> 主持人关闭讨论
    [{now_time}]: 脚本执行 -> 清除脚本多余数据
    [{now_time}]: 脚本结束 -> 进行大会员模式直播间分组
    """

    #  开始执行分组脚本
    try:
        join_live()
        check_user_in_live()
        discuss_open()
        wish_join_room()
        check_user_wish_join_room()
        user_join_discuss_room()
        discuss_close()
        is_run = check_discuss_status()
        if is_run:
            data = {'is_run': True}
            return CaseResponse.success(data=data), demo_log
    except Exception as e:
        mylog.error(f'执行脚本失败，失败原因为{e}')
        raise Exception(f'执行脚本失败，失败原因为{e}')



